В MFC начиная с версии 4 появилось понятие отраженных сообщений. Это продолжение идеи развитой в тех прошлых шагах. Как заставить обрабатываться сообщения внутри класса элемента управления и не обременять этим диалоговое окно. Давайте в нашем проекте удалим всю поддержку обработки сообщения WM_CTRLCOLOR и посмотрим как это делается по новому.
Увидить какие есть отраженные сообщения просто. Для этого нужно зайти в Add Windows Message Handles все сообщения, рядом с котороми будет знак = это отраженные сообщения и значит их можно обрабатывать внутри класса, а не в родительском окне.

Давайте установим обработку этого сообщения и посмотрим что произойдет. В карте сообщения повился новый тип макроса REFLECT:
BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
//{{AFX_MSG_MAP(CMyEdit)
ON_WM_CTLCOLOR_REFLECT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
И появилась функция:
HBRUSH CMyEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
// TODO: Return a non-NULL brush if the parent's handler should not be called
return NULL;
}
Где мы и можем установить цвета и заливки. Как видите это самый простой способ из всех. Им и надо пользоваться.